package com.plum.admin.modules.sys.vo;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonInclude;
import lombok.Data;

import java.time.LocalDateTime;
import java.util.List;

/**
 *
 * @author 子丶沫
 * @since 2020-11-18
 */
@Data
public class MenuTreeVo implements Comparable<MenuTreeVo>{

    /**
     * 对应SysDepart中的id字段,前端数据树中的key
     */
    private String key;
    /**
     * 对应SysDepart中的id字段,前端数据树中的value
     */
    private String value;
    /**
     * 对应depart_name字段,前端数据树中的title
     */
    private String label;

    /**
     * 对应depart_name字段,前端数据树中的title
     */
    private String title;

    /**
     * 菜单ID
     */
    private String menuId;

    private String icon;

    /**
     * 权限标识
     */
    private String permission;

    private String path;

    /**
     * 菜单名称
     */
    private String name;

    /**
     * 父菜单ID
     */
    private String parentId;

    /**
     * 菜单类型 （类型   0：目录   1：菜单   2：按钮）
     */
    private Integer type;

    private Integer keepAlive;

    private boolean disabled;

    /**
     * 排序
     */
    private Integer sort;

    /**
     * 父菜单名称
     */
    private String parentTitle;

    private String component;

    /**
     * 菜单等级
     */
    private Integer level;

    private Boolean alwaysShow;

    private String redirect;

    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    private LocalDateTime createTime;

    @JsonInclude(JsonInclude.Include.NON_EMPTY)
    private List<MenuTreeVo> children;

    @Override
    public int compareTo(MenuTreeVo o) {
        return o.getSort().compareTo(sort);
    }
}
